{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Time Series"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "np.random.seed(12345)\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rc('figure', figsize=(10, 6))\n",
    "PREVIOUS_MAX_ROWS = pd.options.display.max_rows\n",
    "pd.options.display.max_rows = 20\n",
    "np.set_printoptions(precision=4, suppress=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Date and Time Data Types and Tools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2018, 9, 1, 18, 40, 27, 228707)"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datetime import datetime\n",
    "now = datetime.now()\n",
    "now"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2018, 9, 1)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "now.year, now.month, now.day"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.timedelta(926, 56700)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "delta = datetime(2011, 1, 7) - datetime(2008, 6, 24, 8, 15)\n",
    "delta\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "926"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "delta.days\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "56700"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "delta.seconds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2011, 1, 19, 0, 0)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datetime import timedelta\n",
    "start = datetime(2011, 1, 7)\n",
    "start + timedelta(12)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2010, 12, 14, 0, 0)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "start - 2 * timedelta(12)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Converting Between String and Datetime"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2011-01-03 00:00:00'"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp = datetime(2011, 1, 3)\n",
    "str(stamp)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'2011-01-03'"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp.strftime('%Y-%m-%d')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2011, 1, 3, 0, 0)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "value = '2011-01-03'\n",
    "datetime.strptime(value, '%Y-%m-%d')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[datetime.datetime(2011, 7, 6, 0, 0), datetime.datetime(2011, 8, 6, 0, 0)]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datestrs = ['7/6/2011', '8/6/2011']\n",
    "[datetime.strptime(x, '%m/%d/%Y') for x in datestrs]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2011, 1, 3, 0, 0)"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from dateutil.parser import parse\n",
    "parse('2011-01-03')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(1997, 1, 31, 22, 45)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse('Jan 31, 1997 10:45 PM')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "datetime.datetime(2011, 12, 6, 0, 0)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "parse('6/12/2011', dayfirst=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00'], dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "datestrs = ['2011-07-06 12:00:00', '2011-08-06 00:00:00']\n",
    "pd.to_datetime(datestrs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2011-07-06 12:00:00', '2011-08-06 00:00:00', 'NaT'], dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "idx = pd.to_datetime(datestrs + [None])\n",
    "idx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "NaT"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "idx[2]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False,  True])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.isnull(idx)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Time Series Basics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.204708\n",
       "2011-01-05    0.478943\n",
       "2011-01-07   -0.519439\n",
       "2011-01-08   -0.555730\n",
       "2011-01-10    1.965781\n",
       "2011-01-12    1.393406\n",
       "dtype: float64"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datetime import datetime\n",
    "dates = [datetime(2011, 1, 2), datetime(2011, 1, 5),\n",
    "         datetime(2011, 1, 7), datetime(2011, 1, 8),\n",
    "         datetime(2011, 1, 10), datetime(2011, 1, 12)]\n",
    "ts = pd.Series(np.random.randn(6), index=dates)\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2011-01-02', '2011-01-05', '2011-01-07', '2011-01-08',\n",
       "               '2011-01-10', '2011-01-12'],\n",
       "              dtype='datetime64[ns]', freq=None)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.204708\n",
       "2011-01-07   -0.519439\n",
       "2011-01-10    1.965781\n",
       "dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[::2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.409415\n",
       "2011-01-05         NaN\n",
       "2011-01-07   -1.038877\n",
       "2011-01-08         NaN\n",
       "2011-01-10    3.931561\n",
       "2011-01-12         NaN\n",
       "dtype: float64"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts + ts[::2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dtype('<M8[ns]')"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.dtype"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-01-02 00:00:00')"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp = ts.index[0]\n",
    "stamp"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Indexing, Selection, Subsetting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.5194387150567381"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp = ts.index[2]\n",
    "ts[stamp]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.9657805725027142"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['1/10/2011']\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.9657805725027142"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['20110110']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01    0.092908\n",
       "2000-01-02    0.281746\n",
       "2000-01-03    0.769023\n",
       "2000-01-04    1.246435\n",
       "2000-01-05    1.007189\n",
       "2000-01-06   -1.296221\n",
       "2000-01-07    0.274992\n",
       "2000-01-08    0.228913\n",
       "2000-01-09    1.352917\n",
       "2000-01-10    0.886429\n",
       "                ...   \n",
       "2002-09-17   -0.139298\n",
       "2002-09-18   -1.159926\n",
       "2002-09-19    0.618965\n",
       "2002-09-20    1.373890\n",
       "2002-09-21   -0.983505\n",
       "2002-09-22    0.930944\n",
       "2002-09-23   -0.811676\n",
       "2002-09-24   -1.830156\n",
       "2002-09-25   -0.138730\n",
       "2002-09-26    0.334088\n",
       "Freq: D, Length: 1000, dtype: float64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "longer_ts = pd.Series(np.random.randn(1000),\n",
    "                      index=pd.date_range('1/1/2000', periods=1000))\n",
    "longer_ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2001-01-01    1.599534\n",
       "2001-01-02    0.474071\n",
       "2001-01-03    0.151326\n",
       "2001-01-04   -0.542173\n",
       "2001-01-05   -0.475496\n",
       "2001-01-06    0.106403\n",
       "2001-01-07   -1.308228\n",
       "2001-01-08    2.173185\n",
       "2001-01-09    0.564561\n",
       "2001-01-10   -0.190481\n",
       "                ...   \n",
       "2001-12-22    0.000369\n",
       "2001-12-23    0.900885\n",
       "2001-12-24   -0.454869\n",
       "2001-12-25   -0.864547\n",
       "2001-12-26    1.129120\n",
       "2001-12-27    0.057874\n",
       "2001-12-28   -0.433739\n",
       "2001-12-29    0.092698\n",
       "2001-12-30   -1.397820\n",
       "2001-12-31    1.457823\n",
       "Freq: D, Length: 365, dtype: float64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "longer_ts['2001']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2001-05-01   -0.622547\n",
       "2001-05-02    0.936289\n",
       "2001-05-03    0.750018\n",
       "2001-05-04   -0.056715\n",
       "2001-05-05    2.300675\n",
       "2001-05-06    0.569497\n",
       "2001-05-07    1.489410\n",
       "2001-05-08    1.264250\n",
       "2001-05-09   -0.761837\n",
       "2001-05-10   -0.331617\n",
       "                ...   \n",
       "2001-05-22    0.503699\n",
       "2001-05-23   -1.387874\n",
       "2001-05-24    0.204851\n",
       "2001-05-25    0.603705\n",
       "2001-05-26    0.545680\n",
       "2001-05-27    0.235477\n",
       "2001-05-28    0.111835\n",
       "2001-05-29   -1.251504\n",
       "2001-05-30   -2.949343\n",
       "2001-05-31    0.634634\n",
       "Freq: D, Length: 31, dtype: float64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "longer_ts['2001-05']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.204708\n",
       "2011-01-05    0.478943\n",
       "2011-01-07   -0.519439\n",
       "2011-01-08   -0.555730\n",
       "2011-01-10    1.965781\n",
       "2011-01-12    1.393406\n",
       "dtype: float64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-07   -0.519439\n",
       "2011-01-08   -0.555730\n",
       "2011-01-10    1.965781\n",
       "2011-01-12    1.393406\n",
       "dtype: float64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts[datetime(2011, 1, 7):]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-07   -0.519439\n",
       "2011-01-08   -0.555730\n",
       "2011-01-10    1.965781\n",
       "dtype: float64"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts['1/6/2011':'1/11/2011']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.204708\n",
       "2011-01-05    0.478943\n",
       "2011-01-07   -0.519439\n",
       "2011-01-08   -0.555730\n",
       "dtype: float64"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.truncate(after='1/9/2011')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2001-05-02</th>\n",
       "      <td>-0.006045</td>\n",
       "      <td>0.490094</td>\n",
       "      <td>-0.277186</td>\n",
       "      <td>-0.707213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001-05-09</th>\n",
       "      <td>-0.560107</td>\n",
       "      <td>2.735527</td>\n",
       "      <td>0.927335</td>\n",
       "      <td>1.513906</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001-05-16</th>\n",
       "      <td>0.538600</td>\n",
       "      <td>1.273768</td>\n",
       "      <td>0.667876</td>\n",
       "      <td>-0.969206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001-05-23</th>\n",
       "      <td>1.676091</td>\n",
       "      <td>-0.817649</td>\n",
       "      <td>0.050188</td>\n",
       "      <td>1.951312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001-05-30</th>\n",
       "      <td>3.260383</td>\n",
       "      <td>0.963301</td>\n",
       "      <td>1.201206</td>\n",
       "      <td>-1.852001</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2001-05-02 -0.006045  0.490094 -0.277186 -0.707213\n",
       "2001-05-09 -0.560107  2.735527  0.927335  1.513906\n",
       "2001-05-16  0.538600  1.273768  0.667876 -0.969206\n",
       "2001-05-23  1.676091 -0.817649  0.050188  1.951312\n",
       "2001-05-30  3.260383  0.963301  1.201206 -1.852001"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dates = pd.date_range('1/1/2000', periods=100, freq='W-WED')\n",
    "long_df = pd.DataFrame(np.random.randn(100, 4),\n",
    "                       index=dates,\n",
    "                       columns=['Colorado', 'Texas',\n",
    "                                'New York', 'Ohio'])\n",
    "long_df.loc['5-2001']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Time Series with Duplicate Indices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01    0\n",
       "2000-01-02    1\n",
       "2000-01-02    2\n",
       "2000-01-02    3\n",
       "2000-01-03    4\n",
       "dtype: int32"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dates = pd.DatetimeIndex(['1/1/2000', '1/2/2000', '1/2/2000',\n",
    "                          '1/2/2000', '1/3/2000'])\n",
    "dup_ts = pd.Series(np.arange(5), index=dates)\n",
    "dup_ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dup_ts.index.is_unique"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dup_ts['1/3/2000']  # not duplicated\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-02    1\n",
       "2000-01-02    2\n",
       "2000-01-02    3\n",
       "dtype: int32"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dup_ts['1/2/2000']  # duplicated"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01    0\n",
       "2000-01-02    2\n",
       "2000-01-03    4\n",
       "dtype: int32"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped = dup_ts.groupby(level=0)\n",
    "grouped.mean()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01    1\n",
       "2000-01-02    3\n",
       "2000-01-03    1\n",
       "dtype: int64"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped.count()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Date Ranges, Frequencies, and Shifting"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011-01-02   -0.204708\n",
       "2011-01-05    0.478943\n",
       "2011-01-07   -0.519439\n",
       "2011-01-08   -0.555730\n",
       "2011-01-10    1.965781\n",
       "2011-01-12    1.393406\n",
       "dtype: float64"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndexResampler [freq=<Day>, axis=0, closed=left, label=left, convention=start, base=0]"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "resampler = ts.resample('D')\n",
    "resampler"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Generating Date Ranges"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-04-01', '2012-04-02', '2012-04-03', '2012-04-04',\n",
       "               '2012-04-05', '2012-04-06', '2012-04-07', '2012-04-08',\n",
       "               '2012-04-09', '2012-04-10', '2012-04-11', '2012-04-12',\n",
       "               '2012-04-13', '2012-04-14', '2012-04-15', '2012-04-16',\n",
       "               '2012-04-17', '2012-04-18', '2012-04-19', '2012-04-20',\n",
       "               '2012-04-21', '2012-04-22', '2012-04-23', '2012-04-24',\n",
       "               '2012-04-25', '2012-04-26', '2012-04-27', '2012-04-28',\n",
       "               '2012-04-29', '2012-04-30', '2012-05-01', '2012-05-02',\n",
       "               '2012-05-03', '2012-05-04', '2012-05-05', '2012-05-06',\n",
       "               '2012-05-07', '2012-05-08', '2012-05-09', '2012-05-10',\n",
       "               '2012-05-11', '2012-05-12', '2012-05-13', '2012-05-14',\n",
       "               '2012-05-15', '2012-05-16', '2012-05-17', '2012-05-18',\n",
       "               '2012-05-19', '2012-05-20', '2012-05-21', '2012-05-22',\n",
       "               '2012-05-23', '2012-05-24', '2012-05-25', '2012-05-26',\n",
       "               '2012-05-27', '2012-05-28', '2012-05-29', '2012-05-30',\n",
       "               '2012-05-31', '2012-06-01'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index = pd.date_range('2012-04-01', '2012-06-01')\n",
    "index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-04-01', '2012-04-02', '2012-04-03', '2012-04-04',\n",
       "               '2012-04-05', '2012-04-06', '2012-04-07', '2012-04-08',\n",
       "               '2012-04-09', '2012-04-10', '2012-04-11', '2012-04-12',\n",
       "               '2012-04-13', '2012-04-14', '2012-04-15', '2012-04-16',\n",
       "               '2012-04-17', '2012-04-18', '2012-04-19', '2012-04-20'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range(start='2012-04-01', periods=20)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-05-13', '2012-05-14', '2012-05-15', '2012-05-16',\n",
       "               '2012-05-17', '2012-05-18', '2012-05-19', '2012-05-20',\n",
       "               '2012-05-21', '2012-05-22', '2012-05-23', '2012-05-24',\n",
       "               '2012-05-25', '2012-05-26', '2012-05-27', '2012-05-28',\n",
       "               '2012-05-29', '2012-05-30', '2012-05-31', '2012-06-01'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range(end='2012-06-01', periods=20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2000-01-31', '2000-02-29', '2000-03-31', '2000-04-28',\n",
       "               '2000-05-31', '2000-06-30', '2000-07-31', '2000-08-31',\n",
       "               '2000-09-29', '2000-10-31', '2000-11-30'],\n",
       "              dtype='datetime64[ns]', freq='BM')"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2000-01-01', '2000-12-01', freq='BM')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-05-02 12:56:31', '2012-05-03 12:56:31',\n",
       "               '2012-05-04 12:56:31', '2012-05-05 12:56:31',\n",
       "               '2012-05-06 12:56:31'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2012-05-02 12:56:31', periods=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-05-02', '2012-05-03', '2012-05-04', '2012-05-05',\n",
       "               '2012-05-06'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2012-05-02 12:56:31', periods=5, normalize=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Frequencies and Date Offsets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Hour>"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pandas.tseries.offsets import Hour, Minute\n",
    "hour = Hour()\n",
    "hour"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<4 * Hours>"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "four_hours = Hour(4)#传入一个整数即可定义偏移量的倍数\n",
    "four_hours"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 04:00:00',\n",
       "               '2000-01-01 08:00:00', '2000-01-01 12:00:00',\n",
       "               '2000-01-01 16:00:00', '2000-01-01 20:00:00',\n",
       "               '2000-01-02 00:00:00', '2000-01-02 04:00:00',\n",
       "               '2000-01-02 08:00:00', '2000-01-02 12:00:00',\n",
       "               '2000-01-02 16:00:00', '2000-01-02 20:00:00',\n",
       "               '2000-01-03 00:00:00', '2000-01-03 04:00:00',\n",
       "               '2000-01-03 08:00:00', '2000-01-03 12:00:00',\n",
       "               '2000-01-03 16:00:00', '2000-01-03 20:00:00'],\n",
       "              dtype='datetime64[ns]', freq='4H')"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2000-01-01', '2000-01-03 23:59', freq='4h')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<150 * Minutes>"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Hour(2) + Minute(30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2000-01-01 00:00:00', '2000-01-01 01:30:00',\n",
       "               '2000-01-01 03:00:00', '2000-01-01 04:30:00',\n",
       "               '2000-01-01 06:00:00', '2000-01-01 07:30:00',\n",
       "               '2000-01-01 09:00:00', '2000-01-01 10:30:00',\n",
       "               '2000-01-01 12:00:00', '2000-01-01 13:30:00'],\n",
       "              dtype='datetime64[ns]', freq='90T')"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('2000-01-01', periods=10, freq='1h30min')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Week of month dates"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Timestamp('2012-01-20 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-02-17 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-03-16 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-04-20 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-05-18 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-06-15 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-07-20 00:00:00', freq='WOM-3FRI'),\n",
       " Timestamp('2012-08-17 00:00:00', freq='WOM-3FRI')]"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.date_range('2012-01-01', '2012-09-01', freq='WOM-3FRI')\n",
    "list(rng)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Shifting (Leading and Lagging) Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.116696\n",
       "2000-02-29    2.389645\n",
       "2000-03-31   -0.932454\n",
       "2000-04-30   -0.229331\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts = pd.Series(np.random.randn(4),\n",
    "               index=pd.date_range('1/1/2000', periods=4, freq='M'))\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31         NaN\n",
       "2000-02-29         NaN\n",
       "2000-03-31   -0.116696\n",
       "2000-04-30    2.389645\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.117388\n",
       "2000-02-29   -0.517795\n",
       "2000-03-31         NaN\n",
       "2000-04-30         NaN\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(-2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31          NaN\n",
       "2000-02-29   -21.477561\n",
       "2000-03-31    -1.390206\n",
       "2000-04-30    -0.754057\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts / ts.shift(1) - 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.116696\n",
       "2000-02-29    2.389645\n",
       "2000-03-31   -0.932454\n",
       "2000-04-30   -0.229331\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-03-31   -0.116696\n",
       "2000-04-30    2.389645\n",
       "2000-05-31   -0.932454\n",
       "2000-06-30   -0.229331\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(2, freq='M')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-02-03   -0.116696\n",
       "2000-03-03    2.389645\n",
       "2000-04-03   -0.932454\n",
       "2000-05-03   -0.229331\n",
       "dtype: float64"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(3, freq='D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31 01:30:00   -0.116696\n",
       "2000-02-29 01:30:00    2.389645\n",
       "2000-03-31 01:30:00   -0.932454\n",
       "2000-04-30 01:30:00   -0.229331\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.shift(1, freq='90T')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Shifting dates with offsets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-11-20 00:00:00')"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pandas.tseries.offsets import Day, MonthEnd\n",
    "now = datetime(2011, 11, 17)\n",
    "now + 3 * Day()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-11-30 00:00:00')"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "now + MonthEnd()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-12-31 00:00:00')"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "now + MonthEnd(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-11-30 00:00:00')"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offset = MonthEnd()\n",
    "offset.rollforward(now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-10-31 00:00:00')"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "offset.rollback(now)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-15   -1.140330\n",
       "2000-01-19    0.439920\n",
       "2000-01-23   -0.823758\n",
       "2000-01-27   -0.520930\n",
       "2000-01-31    0.350282\n",
       "2000-02-04    0.204395\n",
       "2000-02-08    0.133445\n",
       "2000-02-12    0.327905\n",
       "2000-02-16    0.072153\n",
       "2000-02-20    0.131678\n",
       "2000-02-24   -1.297459\n",
       "2000-02-28    0.997747\n",
       "2000-03-03    0.870955\n",
       "2000-03-07   -0.991253\n",
       "2000-03-11    0.151699\n",
       "2000-03-15    1.266151\n",
       "2000-03-19   -0.202469\n",
       "2000-03-23    0.050718\n",
       "2000-03-27    0.639869\n",
       "2000-03-31    0.597594\n",
       "Freq: 4D, dtype: float64"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts = pd.Series(np.random.randn(20),\n",
    "               index=pd.date_range('1/15/2000', periods=20, freq='4d'))\n",
    "ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.338963\n",
       "2000-02-29    0.081409\n",
       "2000-03-31    0.297908\n",
       "dtype: float64"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.groupby(offset.rollforward).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.338963\n",
       "2000-02-29    0.081409\n",
       "2000-03-31    0.297908\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('M').mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Time Zone Handling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['US/Eastern', 'US/Hawaii', 'US/Mountain', 'US/Pacific', 'UTC']"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pytz\n",
    "pytz.common_timezones[-5:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tz = pytz.timezone('America/New_York')\n",
    "tz"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Time Zone Localization and Conversion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 09:30:00   -0.797246\n",
       "2012-03-10 09:30:00    0.472879\n",
       "2012-03-11 09:30:00    0.522356\n",
       "2012-03-12 09:30:00   -0.546348\n",
       "2012-03-13 09:30:00   -0.733537\n",
       "2012-03-14 09:30:00    1.302736\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.date_range('3/9/2012 9:30', periods=6, freq='D')\n",
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "None\n"
     ]
    }
   ],
   "source": [
    "print(ts.index.tz)#其索引的tz字段为None"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-03-09 09:30:00+00:00', '2012-03-10 09:30:00+00:00',\n",
       "               '2012-03-11 09:30:00+00:00', '2012-03-12 09:30:00+00:00',\n",
       "               '2012-03-13 09:30:00+00:00', '2012-03-14 09:30:00+00:00',\n",
       "               '2012-03-15 09:30:00+00:00', '2012-03-16 09:30:00+00:00',\n",
       "               '2012-03-17 09:30:00+00:00', '2012-03-18 09:30:00+00:00'],\n",
       "              dtype='datetime64[ns, UTC]', freq='D')"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.date_range('3/9/2012 9:30', periods=10, freq='D', tz='UTC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 09:30:00   -0.797246\n",
       "2012-03-10 09:30:00    0.472879\n",
       "2012-03-11 09:30:00    0.522356\n",
       "2012-03-12 09:30:00   -0.546348\n",
       "2012-03-13 09:30:00   -0.733537\n",
       "2012-03-14 09:30:00    1.302736\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 09:30:00+00:00   -0.797246\n",
       "2012-03-10 09:30:00+00:00    0.472879\n",
       "2012-03-11 09:30:00+00:00    0.522356\n",
       "2012-03-12 09:30:00+00:00   -0.546348\n",
       "2012-03-13 09:30:00+00:00   -0.733537\n",
       "2012-03-14 09:30:00+00:00    1.302736\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_utc = ts.tz_localize('UTC')\n",
    "ts_utc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-03-09 09:30:00+00:00', '2012-03-10 09:30:00+00:00',\n",
       "               '2012-03-11 09:30:00+00:00', '2012-03-12 09:30:00+00:00',\n",
       "               '2012-03-13 09:30:00+00:00', '2012-03-14 09:30:00+00:00'],\n",
       "              dtype='datetime64[ns, UTC]', freq='D')"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_utc.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 04:30:00-05:00   -0.797246\n",
       "2012-03-10 04:30:00-05:00    0.472879\n",
       "2012-03-11 05:30:00-04:00    0.522356\n",
       "2012-03-12 05:30:00-04:00   -0.546348\n",
       "2012-03-13 05:30:00-04:00   -0.733537\n",
       "2012-03-14 05:30:00-04:00    1.302736\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_utc.tz_convert('America/New_York')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 09:30:00   -0.797246\n",
       "2012-03-10 09:30:00    0.472879\n",
       "2012-03-11 09:30:00    0.522356\n",
       "2012-03-12 09:30:00   -0.546348\n",
       "2012-03-13 09:30:00   -0.733537\n",
       "2012-03-14 09:30:00    1.302736\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 14:30:00+00:00   -0.797246\n",
       "2012-03-10 14:30:00+00:00    0.472879\n",
       "2012-03-11 13:30:00+00:00    0.522356\n",
       "2012-03-12 13:30:00+00:00   -0.546348\n",
       "2012-03-13 13:30:00+00:00   -0.733537\n",
       "2012-03-14 13:30:00+00:00    1.302736\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_eastern = ts.tz_localize('America/New_York')\n",
    "ts_eastern.tz_convert('UTC')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-09 15:30:00+01:00   -0.797246\n",
       "2012-03-10 15:30:00+01:00    0.472879\n",
       "2012-03-11 14:30:00+01:00    0.522356\n",
       "2012-03-12 14:30:00+01:00   -0.546348\n",
       "2012-03-13 14:30:00+01:00   -0.733537\n",
       "2012-03-14 14:30:00+01:00    1.302736\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_eastern.tz_convert('Europe/Berlin')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-03-09 09:30:00+08:00', '2012-03-10 09:30:00+08:00',\n",
       "               '2012-03-11 09:30:00+08:00', '2012-03-12 09:30:00+08:00',\n",
       "               '2012-03-13 09:30:00+08:00', '2012-03-14 09:30:00+08:00'],\n",
       "              dtype='datetime64[ns, Asia/Shanghai]', freq='D')"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.index.tz_localize('Asia/Shanghai')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Operations with Time Zone−Aware Timestamp Objects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-03-12 04:00:00')"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp = pd.Timestamp('2011-03-12 04:00')\n",
    "stamp"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "stamp_utc = stamp.tz_localize('utc')\n",
    "stamp_utc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-03-11 23:00:00-0500', tz='America/New_York')"
      ]
     },
     "execution_count": 104,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp_utc.tz_convert('America/New_York')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2011-03-12 04:00:00+0300', tz='Europe/Moscow')"
      ]
     },
     "execution_count": 93,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp_moscow = pd.Timestamp('2011-03-12 04:00', tz='Europe/Moscow')\n",
    "stamp_moscow"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1299902400000000000"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp_utc.value\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1299902400000000000"
      ]
     },
     "execution_count": 95,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp_utc.tz_convert('America/New_York').value"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-03-12 01:30:00-0400', tz='US/Eastern')"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from pandas.tseries.offsets import Hour\n",
    "stamp = pd.Timestamp('2012-03-12 01:30', tz='US/Eastern')\n",
    "stamp\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-03-12 02:30:00-0400', tz='US/Eastern')"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp + Hour()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-11-04 00:30:00-0400', tz='US/Eastern')"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp = pd.Timestamp('2012-11-04 00:30', tz='US/Eastern')\n",
    "stamp\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-11-04 01:30:00-0500', tz='US/Eastern')"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stamp + 2 * Hour()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Operations Between Different Time Zones"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-07 09:30:00    0.022199\n",
       "2012-03-08 09:30:00    0.364287\n",
       "2012-03-09 09:30:00   -0.922839\n",
       "2012-03-12 09:30:00    0.312656\n",
       "2012-03-13 09:30:00   -1.128497\n",
       "2012-03-14 09:30:00   -0.333488\n",
       "2012-03-15 09:30:00   -0.514551\n",
       "2012-03-16 09:30:00   -0.559782\n",
       "2012-03-19 09:30:00   -0.783408\n",
       "2012-03-20 09:30:00   -1.797685\n",
       "Freq: B, dtype: float64"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.date_range('3/7/2012 9:30', periods=10, freq='B')\n",
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)\n",
    "ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2012-03-07 09:30:00+00:00', '2012-03-08 09:30:00+00:00',\n",
       "               '2012-03-09 09:30:00+00:00', '2012-03-12 09:30:00+00:00',\n",
       "               '2012-03-13 09:30:00+00:00', '2012-03-14 09:30:00+00:00',\n",
       "               '2012-03-15 09:30:00+00:00'],\n",
       "              dtype='datetime64[ns, UTC]', freq='B')"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts1 = ts[:7].tz_localize('Europe/London')\n",
    "ts2 = ts1[2:].tz_convert('Europe/Moscow')\n",
    "result = ts1 + ts2\n",
    "result.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Periods and Period Arithmetic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007', 'A-DEC')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = pd.Period(2007, freq='A-DEC')\n",
    "p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012', 'A-DEC')"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p + 5\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2005', 'A-DEC')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p - 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Period('2014', freq='A-DEC') - p"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2000-01', '2000-02', '2000-03', '2000-04', '2000-05', '2000-06'], dtype='period[M]', freq='M')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.period_range('2000-01-01', '2000-06-30', freq='M')\n",
    "rng"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01   -0.204708\n",
       "2000-02    0.478943\n",
       "2000-03   -0.519439\n",
       "2000-04   -0.555730\n",
       "2000-05    1.965781\n",
       "2000-06    1.393406\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.Series(np.random.randn(6), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['2001Q3', '2002Q2', '2003Q1'], dtype='period[Q-DEC]', freq='Q-DEC')"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "values = ['2001Q3', '2002Q2', '2003Q1']\n",
    "index = pd.PeriodIndex(values, freq='Q-DEC')\n",
    "index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Period Frequency Conversion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007', 'A-DEC')"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = pd.Period('2007', freq='A-DEC')\n",
    "p\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007-01', 'M')"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('M', how='start')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007-12', 'M')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('M', how='end')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007', 'A-JUN')"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = pd.Period('2007', freq='A-JUN')\n",
    "p\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2006-07', 'M')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('M', 'start')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2007-06', 'M')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('M', 'end')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2008', 'A-JUN')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = pd.Period('Aug-2007', 'M')\n",
    "p.asfreq('A-JUN')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2006    0.092908\n",
       "2007    0.281746\n",
       "2008    0.769023\n",
       "2009    1.246435\n",
       "Freq: A-DEC, dtype: float64"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.period_range('2006', '2009', freq='A-DEC')\n",
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)\n",
    "ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2006-01    0.092908\n",
       "2007-01    0.281746\n",
       "2008-01    0.769023\n",
       "2009-01    1.246435\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq('M',how='start')#根据年度时期的第一个月，每年的时期被取代为每月的时期"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2006-12-29    0.092908\n",
       "2007-12-31    0.281746\n",
       "2008-12-31    0.769023\n",
       "2009-12-31    1.246435\n",
       "Freq: B, dtype: float64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.asfreq('B', how='end')#每年的最后一个工作日，我们可以使用“B”频率，并指明想要该时期的末尾"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Quarterly Period Frequencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012Q4', 'Q-JAN')"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p = pd.Period('2012Q4', freq='Q-JAN')\n",
    "p                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2011-11-01', 'D')"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('D', 'start')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012-01-31', 'D')"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p.asfreq('D', 'end')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Period('2012-01-30 16:00', 'T')"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p4pm = (p.asfreq('B', 'e') - 1).asfreq('T', 's') + 16 * 60\n",
    "p4pm\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Timestamp('2012-01-30 16:00:00')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "p4pm.to_timestamp()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2011Q3    0\n",
       "2011Q4    1\n",
       "2012Q1    2\n",
       "2012Q2    3\n",
       "2012Q3    4\n",
       "2012Q4    5\n",
       "Freq: Q-JAN, dtype: int32"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.period_range('2011Q3', '2012Q4', freq='Q-JAN')\n",
    "ts = pd.Series(np.arange(len(rng)), index=rng)\n",
    "ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2010-10-28 16:00:00    0\n",
       "2011-01-28 16:00:00    1\n",
       "2011-04-28 16:00:00    2\n",
       "2011-07-28 16:00:00    3\n",
       "2011-10-28 16:00:00    4\n",
       "2012-01-30 16:00:00    5\n",
       "dtype: int32"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_rng = (rng.asfreq('B', 'e') - 1).asfreq('T', 's') + 16 * 60\n",
    "ts.index = new_rng.to_timestamp()\n",
    "ts"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Converting Timestamps to Periods (and Back)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31    1.007189\n",
       "2000-02-29   -1.296221\n",
       "2000-03-31    0.274992\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.date_range('2000-01-01', periods=3, freq='M')\n",
    "ts = pd.Series(np.random.randn(3), index=rng)\n",
    "ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01    1.007189\n",
       "2000-02   -1.296221\n",
       "2000-03    0.274992\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pts = ts.to_period()\n",
    "pts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-29    0.228913\n",
       "2000-01-30    1.352917\n",
       "2000-01-31    0.886429\n",
       "2000-02-01   -2.001637\n",
       "2000-02-02   -0.371843\n",
       "2000-02-03    1.669025\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.date_range('1/29/2000', periods=6, freq='D')\n",
    "ts2 = pd.Series(np.random.randn(6), index=rng)\n",
    "ts2\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01    0.228913\n",
       "2000-01    1.352917\n",
       "2000-01    0.886429\n",
       "2000-02   -2.001637\n",
       "2000-02   -0.371843\n",
       "2000-02    1.669025\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts2.to_period('M')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-29    0.228913\n",
       "2000-01-30    1.352917\n",
       "2000-01-31    0.886429\n",
       "2000-02-01   -2.001637\n",
       "2000-02-02   -0.371843\n",
       "2000-02-03    1.669025\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pts = ts2.to_period()\n",
    "pts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-29    0.228913\n",
       "2000-01-30    1.352917\n",
       "2000-01-31    0.886429\n",
       "2000-02-01   -2.001637\n",
       "2000-02-02   -0.371843\n",
       "2000-02-03    1.669025\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pts.to_timestamp(how='end')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Creating a PeriodIndex from Arrays"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>year</th>\n",
       "      <th>quarter</th>\n",
       "      <th>realgdp</th>\n",
       "      <th>realcons</th>\n",
       "      <th>realinv</th>\n",
       "      <th>realgovt</th>\n",
       "      <th>realdpi</th>\n",
       "      <th>cpi</th>\n",
       "      <th>m1</th>\n",
       "      <th>tbilrate</th>\n",
       "      <th>unemp</th>\n",
       "      <th>pop</th>\n",
       "      <th>infl</th>\n",
       "      <th>realint</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1959.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2710.349</td>\n",
       "      <td>1707.4</td>\n",
       "      <td>286.898</td>\n",
       "      <td>470.045</td>\n",
       "      <td>1886.9</td>\n",
       "      <td>28.98</td>\n",
       "      <td>139.7</td>\n",
       "      <td>2.82</td>\n",
       "      <td>5.8</td>\n",
       "      <td>177.146</td>\n",
       "      <td>0.00</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1959.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>2778.801</td>\n",
       "      <td>1733.7</td>\n",
       "      <td>310.859</td>\n",
       "      <td>481.301</td>\n",
       "      <td>1919.7</td>\n",
       "      <td>29.15</td>\n",
       "      <td>141.7</td>\n",
       "      <td>3.08</td>\n",
       "      <td>5.1</td>\n",
       "      <td>177.830</td>\n",
       "      <td>2.34</td>\n",
       "      <td>0.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1959.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2775.488</td>\n",
       "      <td>1751.8</td>\n",
       "      <td>289.226</td>\n",
       "      <td>491.260</td>\n",
       "      <td>1916.4</td>\n",
       "      <td>29.35</td>\n",
       "      <td>140.5</td>\n",
       "      <td>3.82</td>\n",
       "      <td>5.3</td>\n",
       "      <td>178.657</td>\n",
       "      <td>2.74</td>\n",
       "      <td>1.09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1959.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>2785.204</td>\n",
       "      <td>1753.7</td>\n",
       "      <td>299.356</td>\n",
       "      <td>484.052</td>\n",
       "      <td>1931.3</td>\n",
       "      <td>29.37</td>\n",
       "      <td>140.0</td>\n",
       "      <td>4.33</td>\n",
       "      <td>5.6</td>\n",
       "      <td>179.386</td>\n",
       "      <td>0.27</td>\n",
       "      <td>4.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1960.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>2847.699</td>\n",
       "      <td>1770.5</td>\n",
       "      <td>331.722</td>\n",
       "      <td>462.199</td>\n",
       "      <td>1955.5</td>\n",
       "      <td>29.54</td>\n",
       "      <td>139.6</td>\n",
       "      <td>3.50</td>\n",
       "      <td>5.2</td>\n",
       "      <td>180.007</td>\n",
       "      <td>2.31</td>\n",
       "      <td>1.19</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     year  quarter   realgdp  realcons  realinv  realgovt  realdpi    cpi  \\\n",
       "0  1959.0      1.0  2710.349    1707.4  286.898   470.045   1886.9  28.98   \n",
       "1  1959.0      2.0  2778.801    1733.7  310.859   481.301   1919.7  29.15   \n",
       "2  1959.0      3.0  2775.488    1751.8  289.226   491.260   1916.4  29.35   \n",
       "3  1959.0      4.0  2785.204    1753.7  299.356   484.052   1931.3  29.37   \n",
       "4  1960.0      1.0  2847.699    1770.5  331.722   462.199   1955.5  29.54   \n",
       "\n",
       "      m1  tbilrate  unemp      pop  infl  realint  \n",
       "0  139.7      2.82    5.8  177.146  0.00     0.00  \n",
       "1  141.7      3.08    5.1  177.830  2.34     0.74  \n",
       "2  140.5      3.82    5.3  178.657  2.74     1.09  \n",
       "3  140.0      4.33    5.6  179.386  0.27     4.06  \n",
       "4  139.6      3.50    5.2  180.007  2.31     1.19  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('C:/Users/owolf/Desktop/pydata/examples/macrodata.csv')\n",
    "data.head(5)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      1959.0\n",
       "1      1959.0\n",
       "2      1959.0\n",
       "3      1959.0\n",
       "4      1960.0\n",
       "5      1960.0\n",
       "6      1960.0\n",
       "7      1960.0\n",
       "8      1961.0\n",
       "9      1961.0\n",
       "        ...  \n",
       "193    2007.0\n",
       "194    2007.0\n",
       "195    2007.0\n",
       "196    2008.0\n",
       "197    2008.0\n",
       "198    2008.0\n",
       "199    2008.0\n",
       "200    2009.0\n",
       "201    2009.0\n",
       "202    2009.0\n",
       "Name: year, Length: 203, dtype: float64"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.year\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0      1.0\n",
       "1      2.0\n",
       "2      3.0\n",
       "3      4.0\n",
       "4      1.0\n",
       "5      2.0\n",
       "6      3.0\n",
       "7      4.0\n",
       "8      1.0\n",
       "9      2.0\n",
       "      ... \n",
       "193    2.0\n",
       "194    3.0\n",
       "195    4.0\n",
       "196    1.0\n",
       "197    2.0\n",
       "198    3.0\n",
       "199    4.0\n",
       "200    1.0\n",
       "201    2.0\n",
       "202    3.0\n",
       "Name: quarter, Length: 203, dtype: float64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.quarter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PeriodIndex(['1959Q1', '1959Q2', '1959Q3', '1959Q4', '1960Q1', '1960Q2',\n",
       "             '1960Q3', '1960Q4', '1961Q1', '1961Q2',\n",
       "             ...\n",
       "             '2007Q2', '2007Q3', '2007Q4', '2008Q1', '2008Q2', '2008Q3',\n",
       "             '2008Q4', '2009Q1', '2009Q2', '2009Q3'],\n",
       "            dtype='period[Q-DEC]', length=203, freq='Q-DEC')"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "index = pd.PeriodIndex(year=data.year, quarter=data.quarter,\n",
    "                       freq='Q-DEC')\n",
    "index\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1959Q1    0.00\n",
       "1959Q2    2.34\n",
       "1959Q3    2.74\n",
       "1959Q4    0.27\n",
       "1960Q1    2.31\n",
       "1960Q2    0.14\n",
       "1960Q3    2.70\n",
       "1960Q4    1.21\n",
       "1961Q1   -0.40\n",
       "1961Q2    1.47\n",
       "          ... \n",
       "2007Q2    2.75\n",
       "2007Q3    3.45\n",
       "2007Q4    6.38\n",
       "2008Q1    2.82\n",
       "2008Q2    8.53\n",
       "2008Q3   -3.16\n",
       "2008Q4   -8.79\n",
       "2009Q1    0.94\n",
       "2009Q2    3.37\n",
       "2009Q3    3.56\n",
       "Freq: Q-DEC, Name: infl, Length: 203, dtype: float64"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.index = index\n",
    "data.infl"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Resampling and Frequency Conversion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01   -0.438570\n",
       "2000-01-02   -0.539741\n",
       "2000-01-03    0.476985\n",
       "2000-01-04    3.248944\n",
       "2000-01-05   -1.021228\n",
       "2000-01-06   -0.577087\n",
       "2000-01-07    0.124121\n",
       "2000-01-08    0.302614\n",
       "2000-01-09    0.523772\n",
       "2000-01-10    0.000940\n",
       "                ...   \n",
       "2000-03-31    1.581700\n",
       "2000-04-01   -0.528735\n",
       "2000-04-02    0.457002\n",
       "2000-04-03    0.929969\n",
       "2000-04-04   -1.569271\n",
       "2000-04-05   -1.022487\n",
       "2000-04-06   -0.402827\n",
       "2000-04-07    0.220487\n",
       "2000-04-08   -0.193401\n",
       "2000-04-09    0.669158\n",
       "Freq: D, Length: 100, dtype: float64"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.date_range('2000-01-01', periods=100, freq='D')\n",
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)\n",
    "ts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-31   -0.299862\n",
       "2000-02-29   -0.105373\n",
       "2000-03-31    0.273377\n",
       "2000-04-30   -0.160012\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('M').mean()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01   -0.299862\n",
       "2000-02   -0.105373\n",
       "2000-03    0.273377\n",
       "2000-04   -0.160012\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('M', kind='period').mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Downsampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01 00:00:00     0\n",
       "2000-01-01 00:01:00     1\n",
       "2000-01-01 00:02:00     2\n",
       "2000-01-01 00:03:00     3\n",
       "2000-01-01 00:04:00     4\n",
       "2000-01-01 00:05:00     5\n",
       "2000-01-01 00:06:00     6\n",
       "2000-01-01 00:07:00     7\n",
       "2000-01-01 00:08:00     8\n",
       "2000-01-01 00:09:00     9\n",
       "2000-01-01 00:10:00    10\n",
       "2000-01-01 00:11:00    11\n",
       "Freq: T, dtype: int32"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rng = pd.date_range('2000-01-01', periods=12, freq='T')\n",
    "ts = pd.Series(np.arange(12), index=rng)\n",
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1999-12-31 23:55:00     0\n",
       "2000-01-01 00:00:00    15\n",
       "2000-01-01 00:05:00    40\n",
       "2000-01-01 00:10:00    11\n",
       "Freq: 5T, dtype: int32"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min', closed='right').sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1999-12-31 23:55:00     0\n",
       "2000-01-01 00:00:00    15\n",
       "2000-01-01 00:05:00    40\n",
       "2000-01-01 00:10:00    11\n",
       "Freq: 5T, dtype: int32"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min', closed='right').sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2000-01-01 00:00:00     0\n",
       "2000-01-01 00:05:00    15\n",
       "2000-01-01 00:10:00    40\n",
       "2000-01-01 00:15:00    11\n",
       "Freq: 5T, dtype: int32"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min', closed='right', label='right').sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1999-12-31 23:59:59     0\n",
       "2000-01-01 00:04:59    15\n",
       "2000-01-01 00:09:59    40\n",
       "2000-01-01 00:14:59    11\n",
       "Freq: 5T, dtype: int32"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min', closed='right',\n",
    "            label='right', loffset='-1s').sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Open-High-Low-Close (OHLC) resampling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>open</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>close</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-01 00:00:00</th>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-01 00:05:00</th>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "      <td>5</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-01 00:10:00</th>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "      <td>10</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     open  high  low  close\n",
       "2000-01-01 00:00:00     0     4    0      4\n",
       "2000-01-01 00:05:00     5     9    5      9\n",
       "2000-01-01 00:10:00    10    11   10     11"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5min').ohlc()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Upsampling and Interpolation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>0.702110</td>\n",
       "      <td>-0.274569</td>\n",
       "      <td>-0.139142</td>\n",
       "      <td>0.107657</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-05 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-12  0.702110 -0.274569 -0.139142  0.107657"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame = pd.DataFrame(np.random.randn(2, 4),\n",
    "                     index=pd.date_range('1/1/2000', periods=2,\n",
    "                                         freq='W-WED'),\n",
    "                     columns=['Colorado', 'Texas', 'New York', 'Ohio'])\n",
    "frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-07</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-08</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-09</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-10</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-11</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>0.702110</td>\n",
       "      <td>-0.274569</td>\n",
       "      <td>-0.139142</td>\n",
       "      <td>0.107657</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-05 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-06       NaN       NaN       NaN       NaN\n",
       "2000-01-07       NaN       NaN       NaN       NaN\n",
       "2000-01-08       NaN       NaN       NaN       NaN\n",
       "2000-01-09       NaN       NaN       NaN       NaN\n",
       "2000-01-10       NaN       NaN       NaN       NaN\n",
       "2000-01-11       NaN       NaN       NaN       NaN\n",
       "2000-01-12  0.702110 -0.274569 -0.139142  0.107657"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_daily = frame.resample('D').asfreq()\n",
    "df_daily"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-07</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-08</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-09</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-10</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-11</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>0.702110</td>\n",
       "      <td>-0.274569</td>\n",
       "      <td>-0.139142</td>\n",
       "      <td>0.107657</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-05 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-06 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-07 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-08 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-09 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-10 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-11 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-12  0.702110 -0.274569 -0.139142  0.107657"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame.resample('D').ffill()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-07</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-08</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-09</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-10</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-11</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-12</th>\n",
       "      <td>0.702110</td>\n",
       "      <td>-0.274569</td>\n",
       "      <td>-0.139142</td>\n",
       "      <td>0.107657</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-05 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-06 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-07 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-08       NaN       NaN       NaN       NaN\n",
       "2000-01-09       NaN       NaN       NaN       NaN\n",
       "2000-01-10       NaN       NaN       NaN       NaN\n",
       "2000-01-11       NaN       NaN       NaN       NaN\n",
       "2000-01-12  0.702110 -0.274569 -0.139142  0.107657"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame.resample('D').ffill(limit=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-06</th>\n",
       "      <td>-1.648985</td>\n",
       "      <td>-2.252797</td>\n",
       "      <td>-1.166832</td>\n",
       "      <td>0.353607</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-13</th>\n",
       "      <td>0.702110</td>\n",
       "      <td>-0.274569</td>\n",
       "      <td>-0.139142</td>\n",
       "      <td>0.107657</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            Colorado     Texas  New York      Ohio\n",
       "2000-01-06 -1.648985 -2.252797 -1.166832  0.353607\n",
       "2000-01-13  0.702110 -0.274569 -0.139142  0.107657"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame.resample('W-THU').ffill()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Resampling with Periods"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01</th>\n",
       "      <td>-0.606545</td>\n",
       "      <td>-0.417064</td>\n",
       "      <td>-0.017007</td>\n",
       "      <td>-1.224145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-02</th>\n",
       "      <td>-1.800840</td>\n",
       "      <td>1.634736</td>\n",
       "      <td>0.989008</td>\n",
       "      <td>0.457940</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-03</th>\n",
       "      <td>0.555154</td>\n",
       "      <td>1.306720</td>\n",
       "      <td>-0.440554</td>\n",
       "      <td>-0.301350</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-04</th>\n",
       "      <td>0.498791</td>\n",
       "      <td>-0.823991</td>\n",
       "      <td>1.320566</td>\n",
       "      <td>0.507965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-05</th>\n",
       "      <td>-0.653438</td>\n",
       "      <td>0.186980</td>\n",
       "      <td>-0.391725</td>\n",
       "      <td>-0.272293</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         Colorado     Texas  New York      Ohio\n",
       "2000-01 -0.606545 -0.417064 -0.017007 -1.224145\n",
       "2000-02 -1.800840  1.634736  0.989008  0.457940\n",
       "2000-03  0.555154  1.306720 -0.440554 -0.301350\n",
       "2000-04  0.498791 -0.823991  1.320566  0.507965\n",
       "2000-05 -0.653438  0.186980 -0.391725 -0.272293"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame = pd.DataFrame(np.random.randn(24, 4),\n",
    "                     index=pd.period_range('1-2000', '12-2001',\n",
    "                                           freq='M'),\n",
    "                     columns=['Colorado', 'Texas', 'New York', 'Ohio'])\n",
    "frame[:5]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Colorado     Texas  New York      Ohio\n",
       "2000 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001  0.131701 -0.286176 -0.049314 -0.074481"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "annual_frame = frame.resample('A-DEC').mean()\n",
    "annual_frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000Q1</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000Q2</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000Q3</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000Q4</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q1</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q2</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q3</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q4</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Colorado     Texas  New York      Ohio\n",
       "2000Q1 -0.041723  0.279241  0.222087 -0.073888\n",
       "2000Q2 -0.041723  0.279241  0.222087 -0.073888\n",
       "2000Q3 -0.041723  0.279241  0.222087 -0.073888\n",
       "2000Q4 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q1  0.131701 -0.286176 -0.049314 -0.074481\n",
       "2001Q2  0.131701 -0.286176 -0.049314 -0.074481\n",
       "2001Q3  0.131701 -0.286176 -0.049314 -0.074481\n",
       "2001Q4  0.131701 -0.286176 -0.049314 -0.074481"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Q-DEC: Quarterly, year ending in December\n",
    "annual_frame.resample('Q-DEC').ffill()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000Q4</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q1</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q2</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q3</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q4</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Colorado     Texas  New York      Ohio\n",
       "2000Q4 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q1 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q2 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q3 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q4  0.131701 -0.286176 -0.049314 -0.074481"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "annual_frame.resample('Q-DEC', convention='end').ffill()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Colorado</th>\n",
       "      <th>Texas</th>\n",
       "      <th>New York</th>\n",
       "      <th>Ohio</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000Q4</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q1</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q2</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q3</th>\n",
       "      <td>-0.041723</td>\n",
       "      <td>0.279241</td>\n",
       "      <td>0.222087</td>\n",
       "      <td>-0.073888</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2001Q4</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2002Q1</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2002Q2</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2002Q3</th>\n",
       "      <td>0.131701</td>\n",
       "      <td>-0.286176</td>\n",
       "      <td>-0.049314</td>\n",
       "      <td>-0.074481</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Colorado     Texas  New York      Ohio\n",
       "2000Q4 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q1 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q2 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q3 -0.041723  0.279241  0.222087 -0.073888\n",
       "2001Q4  0.131701 -0.286176 -0.049314 -0.074481\n",
       "2002Q1  0.131701 -0.286176 -0.049314 -0.074481\n",
       "2002Q2  0.131701 -0.286176 -0.049314 -0.074481\n",
       "2002Q3  0.131701 -0.286176 -0.049314 -0.074481"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "annual_frame.resample('Q-MAR').ffill()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Moving Window Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AAPL</th>\n",
       "      <th>MSFT</th>\n",
       "      <th>XOM</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2003-01-02</th>\n",
       "      <td>7.40</td>\n",
       "      <td>21.11</td>\n",
       "      <td>29.22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-03</th>\n",
       "      <td>7.45</td>\n",
       "      <td>21.14</td>\n",
       "      <td>29.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-06</th>\n",
       "      <td>7.45</td>\n",
       "      <td>21.52</td>\n",
       "      <td>29.96</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-07</th>\n",
       "      <td>7.43</td>\n",
       "      <td>21.93</td>\n",
       "      <td>28.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-08</th>\n",
       "      <td>7.28</td>\n",
       "      <td>21.31</td>\n",
       "      <td>28.83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-09</th>\n",
       "      <td>7.34</td>\n",
       "      <td>21.93</td>\n",
       "      <td>29.44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-10</th>\n",
       "      <td>7.36</td>\n",
       "      <td>21.97</td>\n",
       "      <td>29.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-13</th>\n",
       "      <td>7.32</td>\n",
       "      <td>22.16</td>\n",
       "      <td>28.91</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-14</th>\n",
       "      <td>7.30</td>\n",
       "      <td>22.39</td>\n",
       "      <td>29.17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-15</th>\n",
       "      <td>7.22</td>\n",
       "      <td>22.11</td>\n",
       "      <td>28.77</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-03</th>\n",
       "      <td>374.60</td>\n",
       "      <td>24.53</td>\n",
       "      <td>71.15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-04</th>\n",
       "      <td>372.50</td>\n",
       "      <td>25.34</td>\n",
       "      <td>72.83</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-05</th>\n",
       "      <td>378.25</td>\n",
       "      <td>25.89</td>\n",
       "      <td>73.95</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-06</th>\n",
       "      <td>377.37</td>\n",
       "      <td>26.34</td>\n",
       "      <td>73.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-07</th>\n",
       "      <td>369.80</td>\n",
       "      <td>26.25</td>\n",
       "      <td>73.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-10</th>\n",
       "      <td>388.81</td>\n",
       "      <td>26.94</td>\n",
       "      <td>76.28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-11</th>\n",
       "      <td>400.29</td>\n",
       "      <td>27.00</td>\n",
       "      <td>76.27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-12</th>\n",
       "      <td>402.19</td>\n",
       "      <td>26.96</td>\n",
       "      <td>77.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-13</th>\n",
       "      <td>408.43</td>\n",
       "      <td>27.18</td>\n",
       "      <td>76.37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-14</th>\n",
       "      <td>422.00</td>\n",
       "      <td>27.27</td>\n",
       "      <td>78.11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2292 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              AAPL   MSFT    XOM\n",
       "2003-01-02    7.40  21.11  29.22\n",
       "2003-01-03    7.45  21.14  29.24\n",
       "2003-01-06    7.45  21.52  29.96\n",
       "2003-01-07    7.43  21.93  28.95\n",
       "2003-01-08    7.28  21.31  28.83\n",
       "2003-01-09    7.34  21.93  29.44\n",
       "2003-01-10    7.36  21.97  29.03\n",
       "2003-01-13    7.32  22.16  28.91\n",
       "2003-01-14    7.30  22.39  29.17\n",
       "2003-01-15    7.22  22.11  28.77\n",
       "...            ...    ...    ...\n",
       "2011-10-03  374.60  24.53  71.15\n",
       "2011-10-04  372.50  25.34  72.83\n",
       "2011-10-05  378.25  25.89  73.95\n",
       "2011-10-06  377.37  26.34  73.89\n",
       "2011-10-07  369.80  26.25  73.56\n",
       "2011-10-10  388.81  26.94  76.28\n",
       "2011-10-11  400.29  27.00  76.27\n",
       "2011-10-12  402.19  26.96  77.16\n",
       "2011-10-13  408.43  27.18  76.37\n",
       "2011-10-14  422.00  27.27  78.11\n",
       "\n",
       "[2292 rows x 3 columns]"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "close_px_all = pd.read_csv('C:/Users/owolf/Desktop/pydata/examples/stock_px_2.csv',\n",
    "                           parse_dates=True, index_col=0)\n",
    "close_px = close_px_all[['AAPL', 'MSFT', 'XOM']]\n",
    "close_px = close_px.resample('B').ffill()\n",
    "close_px"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1b1779c1f98>"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "close_px.AAPL.plot()\n",
    "close_px.AAPL.rolling(250).mean().plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1b1778f04e0>"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2003-01-09         NaN\n",
       "2003-01-10         NaN\n",
       "2003-01-13         NaN\n",
       "2003-01-14         NaN\n",
       "2003-01-15    0.077496\n",
       "2003-01-16    0.074760\n",
       "2003-01-17    0.112368\n",
       "Freq: B, Name: AAPL, dtype: float64"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "appl_std250 = close_px.AAPL.rolling(250, min_periods=10).std()\n",
    "appl_std250[5:12]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1b177add748>"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "appl_std250.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "expanding_mean = appl_std250.expanding().mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1b1779c7320>"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "close_px.rolling(60).mean().plot(logy=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AAPL</th>\n",
       "      <th>MSFT</th>\n",
       "      <th>XOM</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2003-01-02</th>\n",
       "      <td>7.400000</td>\n",
       "      <td>21.110000</td>\n",
       "      <td>29.220000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-03</th>\n",
       "      <td>7.425000</td>\n",
       "      <td>21.125000</td>\n",
       "      <td>29.230000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-06</th>\n",
       "      <td>7.433333</td>\n",
       "      <td>21.256667</td>\n",
       "      <td>29.473333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-07</th>\n",
       "      <td>7.432500</td>\n",
       "      <td>21.425000</td>\n",
       "      <td>29.342500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-08</th>\n",
       "      <td>7.402000</td>\n",
       "      <td>21.402000</td>\n",
       "      <td>29.240000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-09</th>\n",
       "      <td>7.391667</td>\n",
       "      <td>21.490000</td>\n",
       "      <td>29.273333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-10</th>\n",
       "      <td>7.387143</td>\n",
       "      <td>21.558571</td>\n",
       "      <td>29.238571</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-13</th>\n",
       "      <td>7.378750</td>\n",
       "      <td>21.633750</td>\n",
       "      <td>29.197500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-14</th>\n",
       "      <td>7.370000</td>\n",
       "      <td>21.717778</td>\n",
       "      <td>29.194444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2003-01-15</th>\n",
       "      <td>7.355000</td>\n",
       "      <td>21.757000</td>\n",
       "      <td>29.152000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-03</th>\n",
       "      <td>398.002143</td>\n",
       "      <td>25.890714</td>\n",
       "      <td>72.413571</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-04</th>\n",
       "      <td>396.802143</td>\n",
       "      <td>25.807857</td>\n",
       "      <td>72.427143</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-05</th>\n",
       "      <td>395.751429</td>\n",
       "      <td>25.729286</td>\n",
       "      <td>72.422857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-06</th>\n",
       "      <td>394.099286</td>\n",
       "      <td>25.673571</td>\n",
       "      <td>72.375714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-07</th>\n",
       "      <td>392.479333</td>\n",
       "      <td>25.712000</td>\n",
       "      <td>72.454667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-10</th>\n",
       "      <td>389.351429</td>\n",
       "      <td>25.602143</td>\n",
       "      <td>72.527857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-11</th>\n",
       "      <td>388.505000</td>\n",
       "      <td>25.674286</td>\n",
       "      <td>72.835000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-12</th>\n",
       "      <td>388.531429</td>\n",
       "      <td>25.810000</td>\n",
       "      <td>73.400714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-13</th>\n",
       "      <td>388.826429</td>\n",
       "      <td>25.961429</td>\n",
       "      <td>73.905000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2011-10-14</th>\n",
       "      <td>391.038000</td>\n",
       "      <td>26.048667</td>\n",
       "      <td>74.185333</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2292 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  AAPL       MSFT        XOM\n",
       "2003-01-02    7.400000  21.110000  29.220000\n",
       "2003-01-03    7.425000  21.125000  29.230000\n",
       "2003-01-06    7.433333  21.256667  29.473333\n",
       "2003-01-07    7.432500  21.425000  29.342500\n",
       "2003-01-08    7.402000  21.402000  29.240000\n",
       "2003-01-09    7.391667  21.490000  29.273333\n",
       "2003-01-10    7.387143  21.558571  29.238571\n",
       "2003-01-13    7.378750  21.633750  29.197500\n",
       "2003-01-14    7.370000  21.717778  29.194444\n",
       "2003-01-15    7.355000  21.757000  29.152000\n",
       "...                ...        ...        ...\n",
       "2011-10-03  398.002143  25.890714  72.413571\n",
       "2011-10-04  396.802143  25.807857  72.427143\n",
       "2011-10-05  395.751429  25.729286  72.422857\n",
       "2011-10-06  394.099286  25.673571  72.375714\n",
       "2011-10-07  392.479333  25.712000  72.454667\n",
       "2011-10-10  389.351429  25.602143  72.527857\n",
       "2011-10-11  388.505000  25.674286  72.835000\n",
       "2011-10-12  388.531429  25.810000  73.400714\n",
       "2011-10-13  388.826429  25.961429  73.905000\n",
       "2011-10-14  391.038000  26.048667  74.185333\n",
       "\n",
       "[2292 rows x 3 columns]"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "close_px.rolling('20D').mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Exponentially Weighted Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1b178d752b0>"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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RIkS2a7P3d2dNm3a8PXXX5OUlES1atWumz5v3jwWL16Mm5sb/fr1Y8GCBTz1VJHpCVOqUBIRZsyYweTJk/n1118JCQlhyZIlBAQEZM6T9RTxuXPnkpSU5FJ/kReKQu9qWrVqxQcffEBaWhqPP/44fn5+JCcns379+hz/VBsyZAh9+/Zl4sSJ17Xv3r2bw4cPc//99wMZ48rfddddWuiVstjChQszf5fr1asXs2fP5o477sh23ms/urZo0cIptwjMLe26yYe6desSFxfHxo0bM28U0rhxYz799FNatWp122Xbtm3LhAkTbrr9X0REBBMnTswcXjguLo4TJ05w7Ngxh70PpVTOpk6dSpkyZfD19eXOO++8ZZFPSkqiZ8+exMXFMWnSpJvuOWElLfS3cWMf/Ysvvghk3DSkRYsWBAUF4enpCUDLli05cuRIjoXeGMPzzz9PUFDQde3z5s2jb9++17X17duXefPm2fEdKaXy4tSpU2zatImuXbtmHs3v3Jn9gLz//e9/2bhxI7Nnz872znCWEhHLH02bNpUb7d+//6Y2ZV/6GSt1ex9//LEA0r59e9m6dasEBgaKv7+/REdHXzff2bNnxdfXVwYPHuzUfEC05KLG6hG9UkrdwgcffADAyJEjadGiBT///DOlS5emS5cu150a/eabb3L58uXMMW1cjf4Yq5RS2Th27BgHDhzAGJN5E+/KlSuzdu1a2rZtS4sWLejatSvJyclERkYSFhZG/fr1LU6dPZc+opcc7n6l8k8/W6Vub8WKFQDUq1eP0qVLZ7bffffdREVFMXToULZt28bevXt5+eWXef/9962KmiOXPaIvUaIE586dIzAw0KV+vS4KRIRz587d8nx/pRRERkbi6elJ9+7db5pWo0YNS8aVzy+XLfSVKlUiNjaWM2fOWB2lSCpRokTmGBxKqeslJSXxww8/8MQTT/DGG29YHafAXLbQe3p6Ur16datjKKWKoQ0bNpCUlET37t3x8vKyOk6BuXQfvVJKWSEyMhI3Nze2bNlidRS70EKvlFJZiAjLly8nPT0dN7eiUSKLxrtQSik7OXToEEePHgWgY8eO1oaxEy30SimVRWRkJADe3t60aNHC4jT2oYVeKaWyWLFiBd7e3tx33314e3tbHccutNArpZRNQkICUVFR1K9fn4ceesjqOHbjsqdXKqWUs33//fek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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "aapl_px = close_px.AAPL['2006':'2007']\n",
    "ma60 = aapl_px.rolling(30, min_periods=20).mean()\n",
    "ewma60 = aapl_px.ewm(span=30).mean()\n",
    "ma60.plot(style='k--', label='Simple MA')\n",
    "ewma60.plot(style='k-', label='EW MA')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Binary Moving Window Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "spx_px = close_px_all['SPX']\n",
    "spx_rets = spx_px.pct_change()\n",
    "returns = close_px.pct_change()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1b178d52c18>"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "corr = returns.AAPL.rolling(125, min_periods=100).corr(spx_rets)\n",
    "corr.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1b178f7a780>"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "corr = returns.rolling(125, min_periods=100).corr(spx_rets)\n",
    "corr.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### User-Defined Moving Window Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Programing\\Anaconda\\lib\\site-packages\\ipykernel_launcher.py:3: FutureWarning: Currently, 'apply' passes the values as ndarrays to the applied function. In the future, this will change to passing it as Series objects. You need to specify 'raw=True' to keep the current behaviour, and you can pass 'raw=False' to silence this warning\n",
      "  This is separate from the ipykernel package so we can avoid doing imports until\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x1b179abe860>"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from scipy.stats import percentileofscore\n",
    "score_at_2percent = lambda x: percentileofscore(x, 0.02)\n",
    "result = returns.AAPL.rolling(250).apply(score_at_2percent)\n",
    "result.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.options.display.max_rows = PREVIOUS_MAX_ROWS"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Conclusion"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
